知识点一：call方法与this
	语法格式：
		obj.methodName.call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
	定义：
		调用一个对象的一个方法，以另一个对象替换当前对象进行与this绑定。 
	参数说明：
		1、methodName必须是对象的一个方法，call后面小括号中的参数可以没有，如果给出
			第一个必须是一个对象，其他是普通参数。
		2、如果没有提供参数给call默认对象是全局对象，在浏览器中就是window对象
		
	案例解释更容易理解：
		<script>
			var oA = {
				i:"A",
				getI:function(){
					console.log(this.i);
				}
			}
			
			var oB = {
				i:"B"
			}
			
			// 注意下面调用getI后面可以附加call，所有自定义函数都可以这样访问call,这个系统自带功能
			oA.getI.call(oB);	//结果为 B
			
			// 翻译成汉语：把oA里面的getI方法，通过call 借用给 oB使用
			// 也就是让getI里面的this，本次运行时候会等于oB			
		</script>
		
	语法完整案例：
		<script>
			var oA = {
				i:1,
				getI:function(p1,p2){
					console.log(this.i+p1+p2);
				}
			}
			
			var oB = {
				i:3
			}
 
			oA.getI.call(oB,5,7);	//结果为 3+5+7 = 15
			oA.getI(5,7); //结果为12
 		
		</script>
	
	案例3：call 简单应用案例
		<script>
			var i = 1;
			
			function F(){
				alert(this.i)
			}
			
			F(); // 等价于 window.F(), 里面的this==window. 
			//所有全局属性和方法，默认都是 window对象成员，都可以通过window.属性名  访问。
			
			alert(window.i);		// 全局变量 i默认就属于window
			
			
		</script>
		
		<script>
			var i = 1;
			
			function F(){
				alert(this.i)
			}
			
			var oA = {
				i:3
			}
			
			F.call(oA);	// this=oA, 等价：window.F.call(oA). 全局对象，window可以省略
			
			
		</script>
		
		
知识点二：apply()方法
	 语法：apply([thisObj[,argArray]]) 
	 功能：与call类似，就是参数要求不同 
	 说明：如果 argArray 不是一个有效的数组或者不是 arguments 对象，那么将导致一个 TypeError。 
	 	   如果没有提供 argArray 和 thisObj 任何一个参数，那么 window对象将被
		   用作 thisObj， 并且无法被传递任何参数。 
	

常考面试题：
	call与apply的区别
	区别1：
		call可以传递任意参数
		apply 后面一个如果有参数只能是数组
	
	区别2：
		apply第一个对象是window ，第二个参数不能给。
		call 第一个参数是window, 第二个参数仍然可以给。


	</script>
	